﻿/*-------------------------------------------------------------------------
* 命名空间: MyToDo.ValuesConverters/OneWayConverter
* 类       名: OneWayConverter
* 功      能:  抽象类,只需要实现单向转换的抽象类(只从源类型转换为目标类型)
*                源类型:  什么是源类型,比如你一个控件绑定到了一个数据源,这个数据源就是源类型.
*                目标类型: 其实绑定数据的绑定目标,其实就是UI控件.
*                单向方的转换的意思就是只实现从数据源到UI显示内容的转换,就是UI在使用数据的时候
*                是转换后的值.
* 时      间:  2023/12/13 14:20:40
* 版      本:  V1.0
* 作      者:  Fioman
* 格      言:  Talk is cheap,show me the code ^_^
*-------------------------------------------------------------------------*/
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Windows.Data;

namespace MyToDo.ValuesConverters
{
    /// <summary>
    /// 单方向转换(这个抽象类里实现了充绑定目标到绑定源的转换,就是一个空实现,什么也没有做)
    /// 然后继续定义了抽象类Convert()从绑定源到绑定目标的数据转换
    /// </summary>
    public abstract class OneWayConverter : IValueConverter
    {

        /// <summary>
        /// value: 数据源(绑定源就是要转换的值)
        /// </summary>
        /// <param name="value">value: 数据源(绑定源就是要转换的值)</param>
        /// <param name="targetType">
        /// targetaType: 转换的目标类型,就是绑定的目标类型,一般是控件</param>
        /// <param name="parameter">一个可选参数,可以在XAML中提供,你可以使用这个参数来影响转换的行为</param>
        /// <param name="culture">用于转换的文化信息,可以用来进行一些区域特定的转换,例如日和数字的格式化</param>
        /// <returns></returns>
        public abstract object Convert(object Value, Type TargetType, object Parameter, CultureInfo Culture);

        /// <summary>
        /// 当数据从绑定目标传递到绑定源的时候,ConvertBack会被调用.
        /// 一般来说这里不会使用,除非是界面上可以输入更改值的控件,有可能界面上的值到绑定源那里需要转换,否则就是不需要
        /// 不要的时候我们提供了一个默认实现,就是什么都不做
        /// </summary>
        /// <param name="value"></param>
        /// <param name="targetType"></param>
        /// <param name="parameter"></param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public object ConvertBack(object Value, Type TargetType, object Parameter, CultureInfo Culture)
        {
            return Binding.DoNothing;
        }
    }
}
